/*	
 *	Created By: Matthew Hoyes
 *	Date: May 03, 2010
 *
 =========================================================
						- Card.h -

 * Class: Card Class

 * What this class is for:

	- Create an indivual card represented by:
			- a card value (2,3,4,5,6,7,8,9,10,J,Q,K,A)
			- a suit type (clubs, hearts, spades, diamonds)

 =========================================================
 */

#ifndef CARD_H_
#define CARD_H_

#include <iostream>
using namespace std;

#include "LookUp.h"

const int cards_In_Deck = 52;

class Card
{
private:
	CardSuit suit;										// Variable used to hold the suit of the individual card
	CardValue cardValue;								// Variable used to hold the value of the individual card

public:
	Card();												// C01: Default Constructor
	Card(CardSuit theSuit, CardValue theValue);			// C02: Overloaded Constructor

	virtual ~Card();									// C03: Destructor

	Card(Card const &c);								// C04: COPY CONSTRUCTOR
	Card const &operator = (Card const &c);				// ASSIGNMENT OPERATOR

	void setCardSuit(CardSuit const &theSuit);			// M01: Sets the suit of the card
	void setCardValue(CardValue const &theValue);		// M02: Sets the value of the card
	CardSuit getSuit() const;							// M03: Returns the suit of the card
	CardValue getValue() const;							// M04: Returns the value of the card

	void DisplayCard();									// M05: Displays the value and suit of the card to the screen.
	//void discard(Card theCard, Card otherCard);
	void discard(Card const &card);
	void suitHeader(int index);
};

#endif /* CARD_H_ */